{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c5899e97-28df-4852-a380-6d5ed6a2ebb4",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'predict' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[10], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m predict(x,batch_size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m)\n\u001b[0;32m      2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtensorflow\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mtf\u001b[39;00m\n\u001b[0;32m      3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'predict' is not defined"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "mnist=tf.keras.datasets.mnist\n",
    "(x_train,y_train),(x_test,y_test)=mnist.load_data()\n",
    "x_train,x_test=x_train/255.0,x_test/255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "8c1f7c9f-5118-42ba-a124-4368a759e55a",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'predict' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[8], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m predict(x,batch_size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m)\n",
      "\u001b[1;31mNameError\u001b[0m: name 'predict' is not defined"
     ]
    }
   ],
   "source": [
    "predict(x,batch_size=None,verbose=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f4021796-9a28-4400-b1a3-837a8c803f0d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: tensorflow in d:\\programdata\\anaconda3\\lib\\site-packages (2.17.0)\n",
      "Requirement already satisfied: tensorflow-intel==2.17.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow) (2.17.0)\n",
      "Requirement already satisfied: absl-py>=1.0.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (2.1.0)\n",
      "Requirement already satisfied: astunparse>=1.6.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.6.3)\n",
      "Requirement already satisfied: flatbuffers>=24.3.25 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (24.3.25)\n",
      "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (0.6.0)\n",
      "Requirement already satisfied: google-pasta>=0.1.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (0.2.0)\n",
      "Requirement already satisfied: h5py>=3.10.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.11.0)\n",
      "Requirement already satisfied: libclang>=13.0.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (18.1.1)\n",
      "Requirement already satisfied: ml-dtypes<0.5.0,>=0.3.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (0.4.1)\n",
      "Requirement already satisfied: opt-einsum>=2.3.2 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.4.0)\n",
      "Requirement already satisfied: packaging in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (23.2)\n",
      "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.20.3)\n",
      "Requirement already satisfied: requests<3,>=2.21.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (2.32.2)\n",
      "Requirement already satisfied: setuptools in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (69.5.1)\n",
      "Requirement already satisfied: six>=1.12.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.16.0)\n",
      "Requirement already satisfied: termcolor>=1.1.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (2.5.0)\n",
      "Requirement already satisfied: typing-extensions>=3.6.6 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (4.11.0)\n",
      "Requirement already satisfied: wrapt>=1.11.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.14.1)\n",
      "Requirement already satisfied: grpcio<2.0,>=1.24.3 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.66.2)\n",
      "Requirement already satisfied: tensorboard<2.18,>=2.17 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (2.17.1)\n",
      "Requirement already satisfied: keras>=3.2.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.6.0)\n",
      "Requirement already satisfied: numpy<2.0.0,>=1.26.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.26.4)\n",
      "Requirement already satisfied: wheel<1.0,>=0.23.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.17.0->tensorflow) (0.43.0)\n",
      "Requirement already satisfied: rich in d:\\programdata\\anaconda3\\lib\\site-packages (from keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (13.3.5)\n",
      "Requirement already satisfied: namex in d:\\programdata\\anaconda3\\lib\\site-packages (from keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (0.0.8)\n",
      "Requirement already satisfied: optree in d:\\programdata\\anaconda3\\lib\\site-packages (from keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (0.13.0)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in d:\\programdata\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.17.0->tensorflow) (2.0.4)\n",
      "Requirement already satisfied: idna<4,>=2.5 in d:\\programdata\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.17.0->tensorflow) (3.7)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.17.0->tensorflow) (2.2.2)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in d:\\programdata\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.17.0->tensorflow) (2024.7.4)\n",
      "Requirement already satisfied: markdown>=2.6.8 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (3.4.1)\n",
      "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (0.7.2)\n",
      "Requirement already satisfied: werkzeug>=1.0.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (3.0.3)\n",
      "Requirement already satisfied: MarkupSafe>=2.1.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from werkzeug>=1.0.1->tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (2.1.3)\n",
      "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from rich->keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (2.2.0)\n",
      "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from rich->keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (2.15.1)\n",
      "Requirement already satisfied: mdurl~=0.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (0.1.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install tensorflow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a2d8d1dd-de32-4272-b576-c95129dd49b2",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\anaconda3\\Lib\\site-packages\\keras\\src\\layers\\reshaping\\flatten.py:37: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
      "  super().__init__(**kwargs)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                         </span>┃<span style=\"font-weight: bold\"> Output Shape                </span>┃<span style=\"font-weight: bold\">         Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
       "│ flatten (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">784</span>)                 │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                        │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)                 │         <span style=\"color: #00af00; text-decoration-color: #00af00\">100,480</span> │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                      │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>)                  │           <span style=\"color: #00af00; text-decoration-color: #00af00\">1,290</span> │\n",
       "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                        \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape               \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m        Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
       "│ flatten (\u001b[38;5;33mFlatten\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m)                 │               \u001b[38;5;34m0\u001b[0m │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense (\u001b[38;5;33mDense\u001b[0m)                        │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m)                 │         \u001b[38;5;34m100,480\u001b[0m │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense_1 (\u001b[38;5;33mDense\u001b[0m)                      │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m)                  │           \u001b[38;5;34m1,290\u001b[0m │\n",
       "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">101,770</span> (397.54 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m101,770\u001b[0m (397.54 KB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">101,770</span> (397.54 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m101,770\u001b[0m (397.54 KB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model=tf.keras.models.Sequential()\n",
    "model.add(tf.keras.layers.Flatten(input_shape=(28,28)))\n",
    "model.add(tf.keras.layers.Dense(128,activation='relu'))\n",
    "model.add(tf.keras.layers.Dense(10,activation='softmax'))\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "fe18f2e0-db5c-40ef-8d2e-ad2dbcc07744",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 877us/step - loss: 0.4399 - sparse_categorical_crossentropy: 0.4399\n",
      "Epoch 2/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 898us/step - loss: 0.1210 - sparse_categorical_crossentropy: 0.1210\n",
      "Epoch 3/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 901us/step - loss: 0.0806 - sparse_categorical_crossentropy: 0.0806\n",
      "Epoch 4/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 972us/step - loss: 0.0570 - sparse_categorical_crossentropy: 0.0570\n",
      "Epoch 5/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 942us/step - loss: 0.0424 - sparse_categorical_crossentropy: 0.0424\n",
      "313/313 - 0s - 895us/step - loss: 0.0709 - sparse_categorical_crossentropy: 0.0709\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.07092177867889404, 0.07092177867889404]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['sparse_categorical_crossentropy'])\n",
    "model.fit(x_train,y_train,batch_size=32,epochs=5)\n",
    "model.evaluate(x_test,y_test,batch_size=32,verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "64964eab-e1c0-4f12-ad88-d14766373777",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 45ms/step\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step\n"
     ]
    },
    {
     "data": {
      "image/png": "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usTERBX37t1bxRs3bsx2ffTFLgDjO0x1+uyAlsiLO6ZbtWql4osXL6o4Ojra6nNXqlRJxfrsjfosXvpsd+boOdZnZtOf+tCHcHRlypQx+tqS7m9LOOId048KDw9X8ciRI03uow8TTJ061ary9c//8OHDKtaHJPQnfPiUQfbpCx2ZGzLgUwbW04eBAfOLD+lPkumztlpLn6VV/zz0IW79iZLcwKcMiIiIyGJsEBAREZHjPmWgdyFbe8ftypUrVZyTYYKCytxEG9mhDznkhJ5vnT5hkU5fFz4/LBpiL/qCQ3q34M8//6xi/e51a1WuXFnF+vCQfi59KEe/25rI0aWlpanYkqFNa+mLxMXHx9u8fFtjDwERERGxQUBEREQONmQwadIkFU+cONGqY48ePapifc3wnHj++edVbO6JBrK9Z555RsWDBg0yuY8+jHT//n2718lRdevWTcV6N74+LJSTtR708s3RhxLIvooWLapifQ0JfVIxerzjx4+reObMmSa324r+RIO1T6DlBfYQEBERERsERERElMdDBj179jT6evz48Sq2pIv+wIEDKn7jjTdUnJycnO06eXp6qnj48OEqLlSokNlj9MlhKOf0ucDNTaihDxFRVjdv3rRJOY44+Y0z0yeB0tcR4ZCBefrkWgDQvn17FZtb0yYn9EnZ9LUM9OGDv//+2+bntQX2EBAREREbBERERJQHQwY+Pj4qHjp0qNH3zC1LaY6+dG9MTEzOKvb/lSpVSsV9+/a16JjLly/b5Nz0ePoS1Ldv387DmjgOfdisWbNmKu7QoYOKv/zySxXrE7Ho9CExfXnsFi1aqNjc8I1eByJHpw8T6E806dfM5s2bVWzt+hz6BEe2WHcjN7GHgIiIiNggICIiolwaMtDnW9e7YurVq2d1Wfodo/a4U1OfO19fivPRZTn1riBHXEo1P3v22WdNbtefAOFEURl+/fVXFTdt2lTFHTt2VLE+ydc333yj4tq1a6t4zJgxKg4NDVWx/nNurvvTHhO6OCN9gi2921mf0EbPQbFixVSs38HuzBN1WaJr164qXrRokYr1SZ8mT56sYn3IYMGCBSo+cuSIih/3FFp+wh4CIiIiYoOAiIiIABex8DbInHSL9+nTR8Vff/21RcecPXtWxcuWLVPxJ598omKDwZDtOun0pwn0OfILFy5s9pht27apuHfv3iq+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",
      "text/plain": [
       "<Figure size 640x480 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(5):\n",
    "    t=np.random.randint(1,10000)\n",
    "    x=tf.reshape(x_test[t],(1,28,28))\n",
    "    y_pred=np.argmax(model.predict(x),axis=1)\n",
    "    plt.subplot(1,5,i+1)\n",
    "    plt.rcParams['font.sans-serif']=['SimHei']\n",
    "    plt.axis(\"off\")\n",
    "    plt.imshow(x_test[t],cmap='gray')\n",
    "    title=\"标签值: \"+str(y_test[t])+\"\\n预测值:\"+str(y_pred[0])\n",
    "    plt.title(title)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cd41d339-8719-49a4-838a-3beb4e3b8cf7",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
